import os
import shutil
import win32com.client as win32


def convert_doc_to_docx(folder_path):
    doc_folder = os.path.join(folder_path, "original_docs")
    docx_folder = os.path.join(folder_path, "converted_docx")

    # 创建子文件夹
    os.makedirs(doc_folder, exist_ok=True)
    os.makedirs(docx_folder, exist_ok=True)

    converted_files = []
    word = win32.Dispatch("Word.Application")
    word.Visible = False  # 不显示Word窗口

    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        if filename.endswith(".doc") and not filename.startswith("~$"):  # 忽略临时文件
            doc_path = os.path.join(folder_path, filename)
            docx_filename = filename.replace(".doc", ".docx")
            docx_path = os.path.join(docx_folder, docx_filename)

            try:
                # 打开 .doc 文件
                doc = word.Documents.Open(doc_path)
                # 将文件另存为 .docx 格式
                doc.SaveAs(docx_path, FileFormat=16)  # 16 是 .docx 格式的文件类型
                doc.Close()

                # 移动原始 .doc 文件到 original_docs 文件夹
                shutil.move(doc_path, os.path.join(doc_folder, filename))

                converted_files.append(docx_filename)
                print(f"文件 {filename} 成功转换为 {docx_filename}")
            except Exception as e:
                print(f"文件 {filename} 转换失败: {str(e)}")

    word.Quit()
    return converted_files


if __name__ == "__main__":
    folder_path = r"D:\客服知识库\data\光纤交换机\2 维护手册 - 副本"  # 替换为你的文件夹路径
    converted_files = convert_doc_to_docx(folder_path)

    if converted_files:
        print("\n以下文件已成功转换为 .docx 格式，并已移动原文件：")
        for file in converted_files:
            print(file)
    else:
        print("没有找到任何 .doc 文件，或者转换失败。")
